home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / src / Complib / examples / SCFFT1D_ex.f.z / SCFFT1D_ex.f
Encoding:
Text File  |  1996-03-15  |  2.9 KB  |  105 lines

  1. c
  2. c SCFFT1D_ex.f
  3. c
  4. c    This simple example illustrates the use of the FORTRAN
  5. c    interface to the complib 1d FFT routines to perform a 
  6. c    circular shift.
  7. c
  8. c       This program reads the number of samples N for the sequence,
  9. c    and the offset. 
  10. c
  11. c
  12. c Copyright 1995, Silicon Graphics, Inc.
  13. c ALL RIGHTS RESERVED
  14. c
  15. c UNPUBLISHED -- Rights reserved under the copyright laws of the United
  16. c States.   Use of a copyright notice is precautionary only and does not
  17. c imply publication or disclosure.
  18. c
  19. c U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
  20. c Use, duplication or disclosure by the Government is subject to restrictions
  21. c as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
  22. c in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
  23. c in similar or successor clauses in the FAR, or the DOD or NASA FAR
  24. c Supplement.  Contractor/manufacturer is Silicon Graphics, Inc.,
  25. c 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
  26. c
  27. c THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
  28. c INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
  29. c DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
  30. c PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
  31. c GRAPHICS, INC.
  32. c
  33. c
  34. c       To build executable:
  35. c       % f77 -o SCFFT1D_ex SCFFT1D_ex.f -lcomplib.sgimath
  36. c
  37. c    Tu run executable:
  38. c       % SCFFT1D_ex
  39. c
  40. c       Input:
  41. c       7
  42. c       2
  43. c
  44. c       Output:
  45. c       Input Array of size 7 :
  46. c         0.00  1.00  2.00  3.00  4.00  5.00  6.00
  47. c       Filter of size 7 :
  48. c         0.00  0.00  1.00  0.00  0.00  0.00  0.00
  49. c       Scaled Inverse FFT of Array.Filter of size 7 :
  50. c         5.00  6.00  0.00  1.00  2.00  3.00  4.00
  51. c
  52. c
  53. c
  54.  
  55.       PROGRAM SCFFT1D_ex
  56.       IMPLICIT NONE
  57.       INTEGER      i, N, SIZE, OFFSET
  58.       PARAMETER  ( SIZE = 8 )
  59.       REAL         ARRAY( 2*((SIZE+2)/2) ), FILTER( 2*((SIZE+2)/2) ),
  60.      &             COEF ( SIZE+15 )
  61.  
  62.  
  63. c
  64. c     Read in number of samples N and OFFSET.
  65. c
  66.       READ( 5,* ) N, OFFSET
  67.  
  68. c
  69. c     Generate smaples.
  70. c
  71.       DO I = 1, N
  72.         ARRAY ( I ) =  REAL( I ) - 1.
  73.         FILTER( I ) =  0. 
  74.       END DO 
  75.  
  76.       FILTER( OFFSET+1 ) = 1.0
  77.  
  78. c
  79. c     Print out input samples.
  80. c
  81.       WRITE( 6,'( A, I2, A )' ) "Input Array of size",N," :"
  82.       WRITE( 6,'( 10F6.2 )' )   ( ARRAY( I ), I = 1, N )
  83.       WRITE( 6,'( A,I2,A )' )   "Filter of size", N, " :"
  84.       WRITE( 6,'( 10F6.2 )' )   ( FILTER( I ), I = 1, N )
  85.    
  86. c
  87. c     Calculate circular shift.
  88. c
  89.       CALL SCFFT1DUI ( N, COEF )
  90.       CALL SCFFT1DU  ( -1, N, ARRAY, 1, COEF )         
  91.       CALL SCFFT1DU  ( -1, N, FILTER, 1, COEF )         
  92.       CALL SPROD1DU  ( N, ARRAY, 1, FILTER, 1 )
  93.       CALL CSFFT1DU  ( 1, N, ARRAY, 1, COEF ) 
  94.       CALL SSCAL1D   ( N, 1./REAL(N), ARRAY, 1 )
  95.  
  96. c
  97. c     Print out results.
  98. c
  99.       WRITE( 6,'( A, I2, A )' ) 
  100.      &      "Scaled Inverse FFT of Array.Filter of size", N, " :"
  101.       WRITE( 6,'( 10F6.2 )' ) ( ARRAY( I ), I = 1, N )
  102.  
  103.       STOP
  104.       END
  105.